//
//  ViewController.swift
//  try-catch处理
//
//  Created by FF on 16/12/17.
//  Copyright © 2016年 Cold Wind. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let json = "{\"name\": \"zhang\"}"
        let data = json.data(using: .utf8)
        // 反序列化 thorw 抛出异常
        // 方法一 ：推荐 try？ 若果解析成功就有值，否则为nil ，可以配合 guard 使用，十分方便
        let jsonString = try? JSONSerialization.jsonObject(with: data!, options: [])
        
        // 方法二： 强烈不推进，如果解析成功就有值，否则会崩溃
        let jsonString2 = try! JSONSerialization.jsonObject(with: data!, options: [])

        
        // 方法三： 处理异常 也不推荐使用,能够接收到错误，并且输出错误！
        // OC 中 为什么没有人使用 try/catch ?
        // 因为 ARC 开发，编译器自动添加 retain / release / autorelease 
        // 如果使用 try/catch 一旦不平衡， 就会出现内存泄漏！
        do {
            let jsonString3 = try JSONSerialization.jsonObject(with: data!, options: [])
            print(jsonString3)
        } catch {
            print(error)
        }

        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

